SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TTCANC_ANUL_I01]      
/*-------------------------------------------------------*/      
/*---Empresa              : OFISIS S.A.                --*/      
/*---Cliente              : OFISIS                 --*/      
/*---Sistema              : Tesoreria                  --*/      
/*---Mödulo               : Empresa                    --*/      
/*---Programa             : Anulaci÷n Canje Letras     --*/      
/*---Script               : TTCANC_ANUL.sql         --*/      
/*---       CTAS POR COBRAR        --*/      
/*---Nombre SP            : SP_TCCANP_ANUL_I01         --*/      
/*---Desarrollado por     : Eduardo Vivar Pomiano      --*/      
/*---Fecha Creaciön       : 02/02/2000                 --*/      
/*---Base Datos           : Microsoft Sql Server       --*/      
/*---Versiön              : 7.0                        --*/      
/*---Invoca a SP          :                            --*/      
/*-------------------------------------------------------*/      
      
/*-------------------------------------------------------*/      
/*---Modificado 1 por     : Maribel Julca Rodriguez    --*/      
/*---Fecha Modificaci©n   : 21/04/2005                 --*/       
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA, CO_USUA_MODI  --*/      
/*-------------------------------------------------------*/      
/*---------------------------------------------------------*/    
/*---Modificado 2 por     : Carlos Marquez Escobar       --*/    
/*---Fecha Modificaci÷n   : 10/10/2005                   --*/    
/*---Detalle Modificaci÷n : Manejo de Extornos    --*/    
/*---------------------------------------------------------*/    
/*-------------------------------------------------------*/      
/*---Comentarios                                       --*/      
/*---                                                  --*/      
/*---                                                  --*/      
/*-------------------------------------------------------*/      
      
/*-------------------------------------------------------*/      
/*---Drop Proc SP_TTCANC_ANUL_I01                      --*/      
/*---Grant all on SP_TTCANC_ANUL_I01 to public         --*/       
/*---SP_TTCANC_ANUL_I01                                --*/      
/*-------------------------------------------------------*/      
 @ISCO_EMPR      TD_VC_002,       
 @ISCO_USUA_MODI TD_VC_008_USUA,      
 @ISCO_CLIE      TD_VC_020,      
 @ISNU_CANJ      TD_VC_008,      
 @ISCO_TIPO_OPER TD_VC_003,      
 @IDFE_ANUL      TD_DT_001,      
 @ISCO_UNID_CONC TD_VC_003,      
 @IDFE_CANJ      TD_DT_001    
 As    
Declare @CSCO_TIPO_DOCU   TD_VC_003,       
 @CSNU_DOCU_CLIE TD_VC_020,      
 @CSNU_LETR_CLIE TD_VC_020,      
 @CNIM_CANJ_MDOC TD_NU_016_004,      
 @OSTI_DOCU   TD_VC_003,      
 @CSCO_ESTA_ORIG TD_VC_003,      
 @CNIM_CONV_DOCU TD_NU_016_004,      
 @VSCO_ESTA_LETR TD_VC_003,      
 @VNNU_SECU   TD_IN_001,      
 @VSCO_TIPO_INAN TD_VC_003,         
 @VSST_GEAS_ANUL TD_VC_001,      
 @VSCO_TIPO_OPE1 TD_VC_003,      
 @VSST_LETR_ADEL TD_VC_001,      
 @VSNU_ASTO    TD_VC_008,    
    
 @OSNU_ASTO   TD_VC_010,    
 @VSST_INTE_BACH TD_VC_001,    
 @VSST_ASTO_RESU TD_VC_001,    
 @VSTI_OPNI_CARG TD_VC_001,    
 @VSTI_OPNI_ABON TD_VC_001    
    
      
 Execute SP_TTDOCU_CNTB_Q01 6, @OSTI_DOCU OUTPUT      
      
 Begin Tran SP_TCCANJ_CLIE_I01    
 /**-----Verifica si es interface en Linea s/n------*/    
 Select @VSCO_TIPO_INAN = CO_TIPO_OPER, @VSST_GEAS_ANUL = ST_GEAS_ANUL,    
   @VSST_INTE_BACH = ST_INTE_BACH,      
   @VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER       
 From   TMPARA_TESO       
 Where  CO_EMPR = @ISCO_EMPR      
    
    
         
 Declare CU_TCCANJ_CLIE_I01_1 cursor For      
 Select T1.CO_TIPO_DOCU, T1.NU_DOCU_CLIE, T1.NU_LETR_CLIE,       
 T1.IM_CANJ_MDOC, T1.CO_ESTA_ORIG, Isnull(T1.IM_CONV_DOCU, 0)      
 From   TDCANJ_CLIE T1      
 Where  CO_EMPR = @ISCO_EMPR      
 And CO_UNID_CONC = @ISCO_UNID_CONC      
 And CO_CLIE = @ISCO_CLIE      
 And NU_CANJ = @ISNU_CANJ      
 And FE_CANJ = @IDFE_CANJ      
     
 Open CU_TCCANJ_CLIE_I01_1      
 Fetch CU_TCCANJ_CLIE_I01_1       
 Into @CSCO_TIPO_DOCU, @CSNU_DOCU_CLIE, @CSNU_LETR_CLIE, @CNIM_CANJ_MDOC, @CSCO_ESTA_ORIG, @CNIM_CONV_DOCU      
     
 While (@@FETCH_STATUS = 0)      
 Begin      
  If (@@FETCH_STATUS < 0)      
  Begin      
   RaisError 20001 'FIN DE ARCHIVO'      
   Close CU_TCCANJ_CLIE_I01_1      
   Deallocate CU_TCCANJ_CLIE_I01_1      
   Rollback tran SP_TCCANJ_CLIE_I01    
   Return      
  End      
      
      
  
  
  If @CSNU_DOCU_CLIE Is Not Null And @CSCO_TIPO_DOCU Is Not Null      
   If @CSCO_TIPO_DOCU = @OSTI_DOCU            
   Begin      
    Select @VSCO_ESTA_LETR = CO_ESTA_DOCU       
    From   TMLETR_CLIE      
    Where  CO_EMPR = @ISCO_EMPR      
    And    NU_LETR_CLIE = @CSNU_DOCU_CLIE      
        
    Update TMLETR_CLIE       
    Set  CO_ESTA_DOCU = @CSCO_ESTA_ORIG,       
      NU_CANJ = NULL,      
      IM_PAGA = IM_PAGA - ISNULL( @CNIM_CANJ_MDOC, 0),       
      CO_USUA_MODI = @ISCO_USUA_MODI,       
      FE_USUA_MODI = GETDATE()      
    Where  CO_EMPR = @ISCO_EMPR      
    And    NU_LETR_CLIE = @CSNU_DOCU_CLIE       
        
    Select @VNNU_SECU = ISNULL(Max(NU_SECU),0) + 1      
    From   TDKARD_DOCU      
    Where  CO_EMPR = @ISCO_EMPR      
        
    Insert Into TDKARD_DOCU (CO_EMPR, NU_SECU,CO_TIPO_DOCU, NU_DOCU_CLIE, CO_CLIE, CO_ESTA_ACTU,      
    CO_ESTA_DOCU, NU_CORR_MODI, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)      
    Values ( @ISCO_EMPR, @VNNU_SECU , @OSTI_DOCU, @CSNU_DOCU_CLIE, @ISCO_CLIE,      
    @CSCO_ESTA_ORIG,  @VSCO_ESTA_LETR, @VNNU_SECU, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE())        
        
    If @@error <> 0      
    Begin      
     Rollback tran SP_TCCANJ_CLIE_I01    
     Return      
    End          
   End      
   Else       
    Update TMDOCU_CLIE       
    Set  CO_ESTA_DOCU = @CSCO_ESTA_ORIG,       
      NU_CANJ = NULL,      
      IM_PAGA = IM_PAGA - ISNULL( @CNIM_CANJ_MDOC, 0),      
      CO_USUA_MODI = @ISCO_USUA_MODI,       
      FE_USUA_MODI = GETDATE()      
    Where  CO_EMPR = @ISCO_EMPR      
    And CO_TIPO_DOCU = @CSCO_TIPO_DOCU      
    And NU_DOCU_CLIE = @CSNU_DOCU_CLIE      
  Else      
  Begin      
      
   Select @VSCO_ESTA_LETR = CO_ESTA_DOCU, @VSST_LETR_ADEL = ST_LETR_ADEL      
   From   TMLETR_CLIE      
   Where  CO_EMPR = @ISCO_EMPR      
   And    NU_LETR_CLIE = @CSNU_LETR_CLIE      
       
   If @VSST_LETR_ADEL = 'S'      
    Update  TMLETR_CLIE       
    Set     IM_APLI = IM_APLI - @CNIM_CONV_DOCU,      
    CO_USUA_MODI = @ISCO_USUA_MODI,       
    FE_USUA_MODI = GETDATE()      
    Where   CO_EMPR = @ISCO_EMPR      
    And     NU_LETR_CLIE = @CSNU_LETR_CLIE      
   Else      
   Begin       
  
    Update  TMLETR_CLIE       
    Set     CO_ESTA_DOCU = 'ANU',       
    CO_USUA_MODI = @ISCO_USUA_MODI,       
    FE_USUA_MODI = GETDATE()      
    Where   CO_EMPR = @ISCO_EMPR      
    And     NU_LETR_CLIE = @CSNU_LETR_CLIE      
     
--- miguel ---  
  
    Update  TMLETR_CL02       
    Set     CO_ESTA_DOCU = 'ANU',       
    CO_USUA_MODI = @ISCO_USUA_MODI,       
    FE_USUA_MODI = GETDATE()      
    Where   CO_EMPR = @ISCO_EMPR      
    And     NU_LETR_CLIE = @CSNU_LETR_CLIE      
     
      
  
      
    Select @VNNU_SECU = ISNULL(Max(NU_SECU),0) + 1      
    From   TDKARD_DOCU      
    Where  CO_EMPR = @ISCO_EMPR      
      
    Insert Into TDKARD_DOCU (CO_EMPR, NU_SECU,CO_TIPO_DOCU, NU_DOCU_CLIE, CO_CLIE, CO_ESTA_ACTU,      
    CO_ESTA_DOCU, NU_CORR_MODI, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)      
    Values ( @ISCO_EMPR, @VNNU_SECU , @OSTI_DOCU, @CSNU_LETR_CLIE, @ISCO_CLIE,      
    'ANU', @VSCO_ESTA_LETR,  @VNNU_SECU, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE())         
   End      
      
  End      
      
  If @@error <> 0      
  Begin       
   Close CU_TCCANJ_CLIE_I01_1      
   Deallocate CU_TCCANJ_CLIE_I01_1      
   Rollback tran SP_TCCANJ_CLIE_I01      
   Return        
  End      
      
  Fetch CU_TCCANJ_CLIE_I01_1 Into @CSCO_TIPO_DOCU, @CSNU_DOCU_CLIE,       
  @CSNU_LETR_CLIE, @CNIM_CANJ_MDOC, @CSCO_ESTA_ORIG, @CNIM_CONV_DOCU      
     
 End      
     
 Close CU_TCCANJ_CLIE_I01_1      
 Deallocate CU_TCCANJ_CLIE_I01_1      
     
     
 If @VSST_GEAS_ANUL = 'N'      
  Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_INAN      
 Else          
  Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER      
    
 -- Si la Fecha de Anulacion es Mayor --E X T O R N O--  --    
 If  @IDFE_CANJ < @IDFE_ANUL And Month( @IDFE_CANJ ) != Month( @IDFE_ANUL )    
  Update TCCANJ_CLIE     
  Set    TI_SITU = 'EXT', CO_TIPO_OPER = @VSCO_TIPO_OPE1,      
  CO_USUA_MODI = @ISCO_USUA_MODI,       
  FE_USUA_MODI = GETDATE()      
  Where  CO_EMPR = @ISCO_EMPR      
  And CO_UNID_CONC = @ISCO_UNID_CONC      
  And CO_CLIE = @ISCO_CLIE      
  And NU_CANJ = @ISNU_CANJ      
  And FE_CANJ = @IDFE_CANJ      
 Else    
   BEGIN  
  Update TCCANJ_CLIE       
  Set    TI_SITU = 'ANU', CO_TIPO_OPER = @VSCO_TIPO_OPE1,      
  CO_USUA_MODI = @ISCO_USUA_MODI,       
  FE_USUA_MODI = GETDATE()      
  Where  CO_EMPR = @ISCO_EMPR      
  And CO_UNID_CONC = @ISCO_UNID_CONC      
  And CO_CLIE = @ISCO_CLIE      
  And NU_CANJ = @ISNU_CANJ      
  And FE_CANJ = @IDFE_CANJ      
     
 If @@error <> 0      
 Begin       
  Rollback tran SP_TCCANJ_CLIE_I01      
  Return        
 End      
  
  Update TCCANJ_CL02        
  Set TI_SITU = 'ANU',    
  CO_USUA_MODI = @ISCO_USUA_MODI,      
  FE_USUA_MODI = GETDATE()      
  Where CO_EMPR = @ISCO_EMPR        
  And CO_UNID_CONC = @ISCO_UNID_CONC        
  And CO_CLIE=  @ISCO_CLIE        
  And NU_ASTO = @ISNU_CANJ        
  And FE_CANJ = @IDFE_CANJ        
        
  
 If @@error <> 0      
 Begin       
  Rollback tran SP_TCCANJ_CLIE_I01      
  Return        
 End      
     
  
END  
  
 Select @VSNU_ASTO = T1.NU_ASTO       
 From TMDOCU_CLIE T1, TDCANJ_CLIE T2      
 Where T2.CO_EMPR = @ISCO_EMPR      
 And T2.CO_UNID_CONC = @ISCO_UNID_CONC      
 AND T2.CO_CLIE=  @ISCO_CLIE      
 AND T2.NU_CANJ = @ISNU_CANJ      
 AND T2.FE_CANJ = @IDFE_CANJ      
 AND T2.ST_NDEB_AUTO = 'S'      
 AND T1.CO_EMPR = T2.CO_EMPR      
 AND T1.CO_CLIE = T2.CO_CLIE      
 AND T1.CO_TIPO_DOCU = T2.CO_TIPO_DOCU      
 AND T1.NU_DOCU_CLIE = T2.NU_DOCU_CLIE      
     
 IF Rtrim(Isnull(@VSNU_ASTO, '')) != ''      
 Begin      
     
  Update TMDOCU_CLIE      
  Set CO_ESTA_DOCU = 'ANU', IM_PAGA = 0,      
  CO_USUA_MODI = @ISCO_USUA_MODI,       
  FE_USUA_MODI = GETDATE()         
  From TMDOCU_CLIE T1, TDCANJ_CLIE T2      
  Where T2.CO_EMPR = @ISCO_EMPR      
  And T2.CO_UNID_CONC = @ISCO_UNID_CONC      
  AND T2.CO_CLIE=  @ISCO_CLIE      
  AND T2.NU_CANJ = @ISNU_CANJ      
  AND T2.FE_CANJ = @IDFE_CANJ      
  AND T2.ST_NDEB_AUTO = 'S'      
  AND T1.CO_EMPR = T2.CO_EMPR      
  AND T1.CO_CLIE = T2.CO_CLIE      
  AND T1.CO_TIPO_DOCU = T2.CO_TIPO_DOCU      
  AND T1.NU_DOCU_CLIE = T2.NU_DOCU_CLIE      
     
  If @@error <> 0      
  Begin      
   Rollback tran SP_TCCANJ_CLIE_I01      
   Return      
  End          
     
 End      
    
    
 /**-----Verifica si se genera asientos Resumidos ------*/     
 Select @VSST_ASTO_RESU = Max(IsNull( t1.ST_ASTO_RESU, 'S'))          
 From   TMOPRC_RESU t1 , TDTIPO_OPER t2          
 Where  t2.CO_EMPR = @ISCO_EMPR And          
 t2.CO_TIPO_OPER = @ISCO_TIPO_OPER And          
 t1.CO_EMPR = t2.CO_EMPR And          
 t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB       
    
 /**-----Fin de la Validacion de Asientos Resumidos e Interfase en Bach ------*/     
    If @VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND     
  @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON And    
  @IDFE_CANJ < @IDFE_ANUL And Month( @IDFE_CANJ ) != Month( @IDFE_ANUL )    
 Begin    
       
  /*-----Optiene el Numero de Asiento -----*/        
  EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_CONC, @VSCO_TIPO_OPE1, @IDFE_ANUL, @OSNU_ASTO OUTPUT      
  IF (@@ERROR != 0)          
  Begin      
   RollBack Tran  SP_TTAMAR_NCCA_D01    
   Return      
  End      
    
 End      
     
     
 Insert Into TTCANC_ANUL (CO_EMPR, CO_UNID_CONC, CO_CLIE, NU_CANJ, FE_CANJ, CO_TIPO_OPER, FE_ANUL, NU_ASTO, ST_CONT,       
 CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA)      
 Values (@ISCO_EMPR, @ISCO_UNID_CONC, @ISCO_CLIE, @ISNU_CANJ, @IDFE_CANJ, @VSCO_TIPO_OPE1,  @IDFE_ANUL, @OSNU_ASTO, 'N',       
 @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())      
     
 If @@error <> 0      
 Begin      
  Rollback tran SP_TCCANJ_CLIE_I01      
  Return      
 End      
      
commit tran SP_TCCANJ_CLIE_I01      
      
/*------------------------ Fin ------------------------------*/    

GO
